package com.liuyi.netty.im.server.handle.service;

import com.liuyi.netty.im.server.handle.service.model.UserAuthResult;

import java.util.List;

/**
 * 关系链服务接口
 *
 * @author Mr.Fmy
 * @since 2021/12/23
 */
public interface RelationChainService {

    /**
     * 登录
     *
     * @param sign 签名
     */
    UserAuthResult login(String sign);

    /**
     * 退出
     *
     * @param sign 签名
     */
    void logout(String sign);

    /**
     * 顶替
     *
     * @param sign 签名
     */
    void replaced(String sign);

    /**
     * c2c用户画像
     * <pre>
     *   如果 userId 和 fiendUserId 一样，则返回用户自身相关信息
     * </pre>
     *
     * @param userId      用户id（主要查询对象）
     * @param fiendUserId 好友ID
     * @return {@link Object}
     */
    Object c2cProfile(String userId, String fiendUserId);

    /**
     * 群组用户画像
     *
     * @param userId  用户id（主要查询对象）
     * @param groupId 群组id
     * @return {@link Object}
     */
    Object groupProfile(String userId, String groupId);

    /**
     * 获取群管理人
     *
     * @param groupId 群id
     * @return 获取群管理人id集合
     */
    List<String> listByGroupIdManage(String groupId);

    /**
     * 根据群id获取所属用户id
     *
     * @param groupId 群id
     * @return 用户id集合
     */
    List<String> listByGroupId(String groupId);
}
